import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

class Solution {
    //删除了列表中重复项
    public int removeDuplicates(int[] nums) {
        if(nums==null || nums.length == 1){
            return nums.length;
        }
        //采用快慢指针方法遍历
        int left = 0;
        int fastleft = 0;
        for(fastleft = 0;fastleft < nums.length-1;fastleft++){
            if( nums[fastleft]!=nums[fastleft+1]){
                //题目中序列为升序序列，所以重复元素是紧挨在一起的，遇到相同元素就跳过，在下次进行比较时
                //能将上次跳过的重复元素覆盖，++left能记录不重复的元素个数，返回left就行了
                nums[++left] = nums[fastleft + 1];
            }
        }
        //left下标从0开始，所以返回时要+1
        return left+1;
    }
}
public class My {

    public static void main(String[] args) {

    }
    public static void main1(String[] args) {
        int[] nums1 = {4,5,6,0,0,0};
        int[] nums2 = {1,2,3};
        int m = 3,n = 3;
        merge(nums1,m,nums2,n);
        System.out.print(Arrays.toString(nums1));
    }
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        if(n == 0){
            return;
        }

        int len = nums1.length-1;
        //从后往前比较大的值放到nums1数组后面
        while(len>=0){
            if(m == 0 || n == 0){
                break;
            }
            if(nums1[m-1]>nums2[n-1]){
                nums1[len]=nums1[m-1];
                m--;
                len--;
            }else{
                nums1[len] = nums2[n-1];
                n--;
                len--;
            }
        }
        if(m == 0){
            while(len>=0){
                nums1[len--]=nums2[n-1];
                n--;
            }
        }
    }
}
